<?php
namespace Kuoqi\Model\Model;
use Kuoqi\Exception;
use Kuoqi\Format;
use Kuoqi\Config;
//模型的属性对象，每一个属性都有单独的一个对象
class AttrbutesModel{
	
	
	static function __initialize(){
		//self::$client = \kuoqi\database::__initialize();
		//return new self;
	}
	
	protected $attrname = '';//属性名
	protected $attrval = '';//属性值
	public $isUnique = true;//是否字段唯一
	public $isChanged = false;//是否被修改
	public $isIncrement = false;//是否自动增加字段,自动增加字段不计入编辑跟新增
    public $datatype = '';//数据类型，int,varchar 等等
    public $comment = '';//额外备注信息
	public $extra = '';//额外属性信息
	
	public function __construct($n,$v,$options){
		$this->attrname = $n;
		$this->attrval = $v;	
		if(is_array($options)){
			foreach($options as $k=>$v){
				$this->$k = $v;	
			}	
		}
	}
	
	//获取键名
	public function getKey(){
		return $this->attrname;	
	}
	
	//获取属性值
	public function getValue(){
        switch ($this->datatype){
            //todo--看看这个是否需要优化
            //case 'int': $this->attrval = intval($this->attrval);break;
            //case 'tinyint': $this->attrval = intval($this->attrval);break;
        }
		return $this->attrval;	
	}
	
	//设置属性值
	public function setValue($attrval){
		$this->attrval = $attrval;
		$this->isChanged = 1;
	}
	
	//初始化一个值
	public function initValue($attrval){
		$this->attrval = $attrval;
		$this->isChanged = 0;	
	}

	//获取数据类型
    public function setDatatype($datatype){
	    $this->datatype = $datatype;
    }

    //获取数据备注
    public function setComment($comment){
	    $this->comment = $comment;
    }

	//设置额外属性
	public function setExtra($extraval){
		$this->extra = $extraval;
		if($this->extra=='auto_increment'){
			$this->isIncrement = true;
		}
	}
	
	//是否需要修改的信息
	public function isValied(){
		
		//如果是自动增加的字段，则不需要写入到提交列表
		if($this->isIncrement){
			return false;	
		}
		
		//如果这个值发生了概念需要提交到写入列表
		if($this->isChanged){
			return true;	
		}
		
		return false;
	}

}